"""
需求
1.房子（House）有户型、总面积和家具名称列表
  新房子没有任何家具
2.家具（HouseItem）有名字和占地面积，其中
  席梦思（bed）占地4pingmi
  衣柜（chest）占地2平米
  餐桌（table）占地1.5平米
3.将以上三件家具添加到房子中
4.打印房子时，要求输出：户型、总面积、剩余面积、家具名称列表
剩余面积
1.在创建房子对象时，定义一个剩余面积的属性，初始值和总面积相等
2.在调用add_item方法，向房间添加家具时让剩余面积 -= 家具面积
"""
# 被使用的类先开发
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地 %.2f" % (self.name, self.area)


class House:
    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area
        # 剩余面积
        self.free_area = area
        # 家具名称列表
        self.item_list = []

    def __str__(self):
        # python能够自动的将一对括号内部的代码连接在一起
        return "户型：%s\n总面积：%.2f[剩余面积：%.2f]\n家具：%s" \
               % (self.house_type, self.area, self.free_area,self.item_list)

    def add_item(self, item):
        print("要添加 %s" % item)
        # 1.判断家具的面积
        if item.area > self.free_area:
            print("[%s] 的面积太大了，无法添加！" % item.name)
            return
        # 2.将家具的名称添加到家具名称列表中
        self.item_list.append(item.name)
        print("[%s] 添加成功！" % item.name)
        # 3.计算剩余面积
        self.free_area -= item.area

# 1.创建家具
bed = HouseItem("席梦思", 40.0)
chest = HouseItem("衣柜", 2.0)
table = HouseItem("餐桌", 20)

print(bed)
print(chest)
print(table)

# 2.创建房子对象
my_home = House("两室一厅", 60)

my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)

print(my_home)
